Operating system-level virtualization (sometimes also referred to as “container virtualization”) was developed as an alternative to whole-system virtualization. Unlike a whole-system virtualization, which comprises a separate guest operating system running in a virtual machine on top of a host system, operating system-level virtualization uses virtualization containers running on top of a host system's operating system kernel. Processes running in virtualization containers can be isolated from one another using features of the host operating system, such as multiple user space instances. Since virtualization containers do not require guest operating systems, they use less storage space and memory than virtual machines in many cases, and often can be deployed more quickly than virtual machines.
Storage space requirements for virtualization containers can be further reduced in at least some cases by using layered container images. A layered container image comprises one or more read-only image layers. When data changes are made, instead of modifying the data directly in the layer where it resides, a new image layer is added and the changes are recorded in the new layer. Virtualization containers can share access to image layers. In some cases, this can reduce deployment time and storage space requirements since a given image layer may only have to be copied to a given host computer once. However, these potential time and space savings depend largely on the amount of overlap between container images used by virtualization containers on a given host. Furthermore, each image layer must still be copied to a given host computer at least once.
Therefore, there exists ample opportunity for improvement in technologies related to data storage and organization for virtualization containers.